package com.founder.devwork.persistence.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.devwork.dto.res.RepoAuthorStatsDTO;
import com.founder.devwork.dto.res.TopRepositoryDTO;
import com.founder.devwork.entity.Repository;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * Mapper for Repository entity
 */
public interface RepositoryMapper extends BaseMapper<Repository> {
    /**
     * 统计仓库数量
     *
     * @param gitInstance Git实例标识
     * @param name 仓库名称（支持模糊查询）
     * @return 符合条件的仓库总数
     */
    long countRepositoryStats(@Param("gitInstance") String gitInstance, @Param("name") String name);

    /**
     * 分页查询仓库统计信息
     *
     * @param gitInstance Git实例标识
     * @param name 仓库名称（支持模糊查询）
     * @param sortBy 排序字段
     * @param sortDir 排序方向（ASC/DESC）
     * @param offset 分页偏移量
     * @param size 每页记录数
     * @return TopRepositoryDTO列表，包含仓库统计信息
     */
    List<TopRepositoryDTO> queryRepositoryStats(
        @Param("gitInstance") String gitInstance,
        @Param("name") String name,
        @Param("sortBy") String sortBy,
        @Param("sortDir") String sortDir,
        @Param("offset") int offset,
        @Param("size") int size
    );

    List<RepoAuthorStatsDTO> selectRepoAuthorsStats(
        @Param("gitInstance") String gitInstance,
        @Param("repoId") Long repoId,
        @Param("sortBy") String sortBy,
        @Param("sortDirection") String sortDirection
    );
}
